iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

30天學會Python系列 第 8

Python - Data structure、list列表

  • 分享至 

  • xImage
  •  

Data structure

在介紹list列表之前,先介紹一下在Python的數據類型可以分為兩種:
可變/不可變物件 (Mutable/Immutable)

  • 可變 : list/ dict/ set
  • 不可變 : number/ string/ tuple

可變物件:該物件所指向記憶體中的值可以被改變
不可變物件:該物件所指向記憶體中的值不可以被改變,所以當變數指向的值改變時,等於將原來的值複製一份後存於一個新的地址,變數再指向這個新的地址

list在python中屬於可變(mutable)物件,即物件所指向記憶體中的值可以被改變

舉例來說:
我們先令list1這個變數等於[1,2,3,4,5,6,7,8,9],這時候會在記憶體中生成一個list物件,而list1這個變數名稱會指向記憶體中list物件的位址,我們可以用id()這個內建函式查看物件id(類似於記憶體位址)

list1 = [1,2,3,4,5,6,7,8,9]
print(id(list1))

當我們對這個list1做操作之後,再看看物件id有沒有變更

list1.append(10)
print(list1)
print(id(list1))

我們發現前後的id一模一樣,代表身為可變物件的list可以直接改變記憶體位置中的值,對於list可變的性質之後還會有更詳細的介紹


List

列表為python中最基本的數據結構之一,語法為用中括號[]及逗點,生成數據如下

list1 = [1,2,3]
list2 = ['a','b','c']
list3 = [1,2,3,'a','b','c']

list運算與操作

操作 描述
[1,2,3]+[4,5,6] 組合
[1,2,3]*3 重複
len([1,2,3]) 列表長度
3 in [1,2,3] 判斷列表內是否有該元素

迭代
list可以直接拿來進for迴圈中迭代,如下:

for i in [1,2,3]:
    print(i)

Index and slice [開始:結束:step]
列表屬於序列的一種,在python中序列形式的數據結構可以用index索引存取列表內每個元素的值進行列表的操作

#%% Index and slice
a = [1,2,3,4,5,6,7,8,9]
print(a[1:5]) #[2, 3, 4, 5]
print(a[1:7:2]) #[2, 4, 6]
print(a[1::2]) #[2, 4, 6, 8]
print(a[:7:2]) #[1, 3, 5, 7]
print(a[::2]) #[1, 3, 5, 7, 9]

List method
下列為list類別內建的方法

  • list.append(x) 往後增加元素
  • list.extend(iterable) 列表擴充
  • list.insert(i, x) 插入元素
  • list.remove(x) 移除列表中第一個值等於x的元素
  • list.pop([i]) 移除並回傳指定index位置的元素,若沒有指定,則移除並回傳最後一個元素
  • list.index(x[, start[, end]]) 回傳列表中第一個元素值於x的索引位置,可選填範圍(x, start, end)
  • list.sort(key=None, reverse=False) 將列表排序,可選擇代入key為帶有一個參數的函式
#%% list function
list1 = []
print("Origin: ", list1)

list1.append(1)
list1.append(2)
print("append: ", list1)

list1.insert(1, 1.5)
list1.insert(0, 0)
print("insert: ", list1)

list2 = [4,5,6]
list1.extend(list2)
list1.extend([1.5,1.5,1.5])
print("extend: ", list1)

list1.remove(1.5)
list1.remove(1.5)
print("remove: ", list1)

list1.pop()
list1.pop(1)
print("pop: ", list1)

print("index: ", list1.index(4))

list1.sort(reverse = True)
print("sort: ", list1)

刪除列表元素

a = [-1, 1, 66.25, 333, 333, 1234.5]
del a[0]
a
del a[2:4]
a
del a[:]
a

Reference

物件id
https://docs.python.org/3/library/functions.html#id
關於list內建方法的用法,詳情請參照:
https://docs.python.org/3/tutorial/datastructures.html#more-on-lists


上一篇
Python - 數字、字串
下一篇
Python - List Comprehesion
系列文
30天學會Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言